<?php
	// Klass för att generera HTML formulär och hantering av användarens indata och cookies.
	class LoginView{
		// Input-variabler.
		private $username = 'username';
		private $password = 'password';
		private $login = 'login';
		private $logout = 'logout';
		private $checkbox = 'checkbox';
		private $register = '?register';
		// Cookie-variabler.
		private $userCookie_Location = "Dark";
		private $passCookie_Location = "Side";
		// Switch-värden för GetMessage().
		const NO_MESSAGE = "";
		const USER_LOGGED_IN = 1;
		const USER_WRONG_INPUT = 2;
		const USER_LOGGED_OUT = 3;	
		// Funktion för att skriva ut Login-formulär.
		public function DoLoginBox($message){
				return "<form id='login' method='post' accept-charset='UTF-8'>
				<fieldset>
				<label for='username' >Username:</label>
				<input type='text' name='$this->username' id='username'/>
				<label for='password'>Password:</label>
				<input type='password' name='$this->password' id='password'/>
				<input type='submit' name='$this->login' value='Login'/>
				<label for='checkbox' >Remember me:</label>
				<input type='checkbox' name='$this->checkbox'>
				<a href='$this->register'>Register</a>
				</fieldset>
				</form>
				$message		
				";
		}
		// Funktion för att skriva ut Logout-knapp.
		public function DoLogoutBox($message){
				return "<form id='logout' action='' method='post' accept-charset='UTF-8'>
				<input type='submit' name='$this->logout' value='Logout' />
				</form>
				$message
				";
		}
	  	// Funktion för att returnera användarens inmatning i Username: fältet.
		public function GetUserName(){
			if (isset($_POST[$this->username])){
				return $_POST[$this->username];
			}
			else if (isset( $_COOKIE[$this->userCookie_Location]) == true){
				return $_COOKIE[$this->userCookie_Location];
			}
			return null;
		}
	  	// Funktion för att returnera användarens inmatning i Password: fältet.
		public function GetPassword(){
			if (isset($_POST[$this->password])){
				return $_POST[$this->password];
			}
			else if (isset( $_COOKIE[$this->passCookie_Location]) == true){
				return $_COOKIE[$this->passCookie_Location];
			}		
			return null;
		}
	  	// Funktion för att kontrollera om användaren har klickat på Login-knappen eller inte.
		public function TriedToLogin(){
		    if (isset($_POST[$this->login])){
				return true;
			}
			return false;
		}
		// Funktion för att kontrollera om användaren har klickat på Logout-knappen eller inte.
		public function TriedToLogOut(){
		    if (isset($_POST[$this->logout])){
				return true;
			}
			return false;
		}
		// Funktion för att kontrollera om användaren har kryssat i Checkboxen eller inte.
		public function WantsCookie(){
			if (isset($_POST[$this->checkbox])){
				return true;
			}
			return false;
		}
		// Funktion för att skapa cookies för användarnamn och lösenord.	
		public function BakeCookie(){
			$user = $this->GetUserName();
			$pass = $this->GetPassword();
			setcookie ($this->userCookie_Location, $user, time() +4000);
			setcookie ($this->passCookie_Location, $pass, time() +4000);
			$_COOKIE[$this->userCookie_Location] = $user;
			$_COOKIE[$this->passCookie_Location] = $pass;
		}
		// Funktion för att kolla om det finns satta cookies för användarnamn och lösenord.
		public function CheckCookieJar(){
			if(isset($_COOKIE[$this->userCookie_Location]) && isset($_COOKIE[$this->passCookie_Location])){
				return true;
			}
			return false;
		}
		// Funktion för att ta bort användarens cookies.
		public function EatCookie(){
			if (isset($_COOKIE[$this->userCookie_Location])){
				setcookie($this->userCookie_Location, time() -4000);
				unset($_COOKIE[$this->userCookie_Location]);
			}
			if (isset($_COOKIE[$this->passCookie_Location])){
				setcookie($this->passCookie_Location, time() -4000);
				unset($_COOKIE[$this->passCookie_Location]);
			}	
		}
		// Funktion för att hantera meddelanden i Login-formuläret.
		public function GetMessage($status){
			switch ($status){
				case self::USER_LOGGED_IN:
					$message = "You are logged in!";
					break;
				case self::USER_WRONG_INPUT:
					$message = "Wrong username or password!";
					break;
				case self::USER_LOGGED_OUT:
					$message = "You are logged out!";
					break;
				default:			
					break;
			}
			return $message;
		}
	}
?>